#include<pthread.h>
#include<iostream>
#include<unistd.h>

using namespace std;

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

void* pthread_cond_test(void* args)
{
    // 加锁并加上条件变量
    pthread_mutex_lock(&mutex);
    pthread_cond_wait(&cond,&mutex);//wait后会释放锁，等到pthread_cond_signal再加锁，运行下面的代码

    cout<<"被唤醒，开始运行"<<endl;

    pthread_mutex_unlock(&mutex);
}

int main()
{
    pthread_t tid;
    
    //不传参数
    pthread_create(&tid,nullptr,pthread_cond_test,nullptr);

    sleep(3);

    //唤醒单个线程
    pthread_cond_signal(&cond);
    //int pthread_cond_broadcast (pthread_cond_t *cond);唤醒所有线程

    //不需要获取退出状态  
    pthread_join(tid,nullptr);

    return 0;
}
